package com.tedu.api.ee;

import org.junit.Test;

import java.io.*;

/**
 * Java有一套完善的异常处理操作：
 * 程序中对应出现什么问题，就会有对应【对象】异常
 *程序中对应出现什么问题，就会有对应异常【对象】提供出来，错误也是对象！
 *
 * Throwable顶级超类--抛出错误
 *   子类；Exception对象：程序级别的错误【经常遇见】
 *         编译期---FileOutputStream【编写代码同时，下方波浪线】
 *         处理方式①：抛出异常：不管什么错误，抛出方法外
 *                ②：捕获异常
 *         检查异常：通常由编译器检查出来，存在异常类，抛出，捕获！
 *
 *         运行期--控制台【IDE开发工具控制台，显示出红色，异常类名字】
 *         非检查异常：RuntimeException（认为所有异常都来自RuntimeException）
 *                 所有异常都是RuntimeException的子类
 *
 *   子类：Error对象：描述系统级别的错误【不常见】
 *      ----测试：程序挂了？利用字符串不断拼接--Error
 *     String str="字符串";   直接量写出字符串 ---存常量池
 */
public class EE {
    @Test
    public void testError(){
       String name="chao";
       for (int i=1;i<999999999999L;i++){
           name=name+"1";
       }
    }

    @Test
    public void testException(){
        String s="";
        //异常--产生原因：字符串下标越界错误
        //System.out.println(s.charAt(0));
        //s.charAt(0);
        s.length();
        //空指针异常


    }
    public class Homework3 {
        @Test
        public void homework() {
            FileInputStream fis = null;
            try {
                fis=new FileInputStream("fos.txt");
                fis.read();
            } catch (FileNotFoundException e) {//找不到文件
                e.printStackTrace();
            }catch (UnsupportedEncodingException e) {//不支持抛出
                e.printStackTrace();
            } catch (UTFDataFormatException e) {//错误字符
                e.printStackTrace();
            } catch (EOFException e) {//当在输入过程中意外到达文件末尾时抛出
                e.printStackTrace();
            } catch (IOException e) {//IO流
                e.printStackTrace();
            } finally {
            }
        }
    }



}
